Subject: Flow Control - Example Reset/Halve Window Flows

From: "Shannon Nix" <[email-masked]>
Date: Mon, 24 Oct 94 10:01:11

Hi Alan,

I don't know exactly where these fit.  They don't fit into iether
of the example implementations.  Put them where you see fit.

Anyway here are the examples you requested:

8.x.x.x. Example Reset Window Flows

The following flow illustrates the ResetWindow operation if the receiver has 
no FCIND outstanding.

   -----SENDER-----                     ----RECEIVER----
   Granted   Window                     Window   Granted
     0         2   circuit established    2         0
     2         2   <-------- FCIND(Rpt)   2         2
     1         2   FCACK-------------->   2         1
     4         3   <-------- FCIND(Inc)   3         4
     3         3   FCACK-------------->   3         3
                          +- FCIND(Rpt)   3         6
     2         3   DATA---|----------->   3         5
     1         3   DATA---|----------->   3         4
     4         3   <------+
     3         3   FCACK-------------->   3         3
     6         3   <-------- FCIND(Rpt)   3         6
     5         3   FCACK-------------->   3         5
                                          Resource shortage!
     0         0   <-------- FCIND(Rst)   0         5 (note still commited)
     0         0   IFCACK------------->   0         0
                                          Condition eases
     1         1   <-------- FCIND(Inc)   1         1
     0         1   FCACK-------------->   1         0
     2         2   <-------- FCIND(Inc)   2         2
     1         2   DATA--------------->   3         4

The next two flows  illustrate the Reset Window operation if
the receiver has an outstanding FCIND.

   -----SENDER-----                     ----RECEIVER----
   Granted   Window                     Window   Granted
     0         2   circuit established    2         0
     2         2   <-------- FCIND(Rpt)   2         2
     1         2   FCACK-------------->   2         1
     4         3   <-------- FCIND(Inc)   3         4
     3         3   FCACK-------------->   3         3
                          +- FCIND(Rpt)   3         6
     2         3   DATA---|----------->   3         5
                          |               Resource shortage!
                          |+-FCIND(Rst)   0         5
     1         3   DATA---||---------->   0         4
     4         3   <------+|
     3         3   FCACK---+---------->   0         3 (Not IFCACK!)
     2         3   DATA----|---------->   0         2
     0         0   <-------+
     0         0   IFCACK------------->   0         0
                                          Condition eases
     1         1   <-------- FCIND(Inc)   1         1
     0         1   FCACK-------------->   1         0
     2         2   <-------- FCIND(Inc)   2         2
     1         2   DATA--------------->   3         4

   -----SENDER-----                     ----RECEIVER----
   Granted   Window                     Window   Granted
     0         2   circuit established    2         0
     2         2   <-------- FCIND(Rpt)   2         2
     1         2   FCACK-------------->   2         1
     4         3   <-------- FCIND(Inc)   3         4
     3         3   FCACK-------------->   3         3
                          +- FCIND(Rpt)   3         6
     2         3   DATA---|----------->   3         5
                          |               Resource shortage!
                          |+-FCIND(Rst)   0         5
     1         3   DATA---||---------->   0         4
     4         3   <------+|
     0         0   <-------+
     0         0   IFCACK------------->   0         0
                                          Condition eases
     1         1   <-------- FCIND(Inc)   1         1
     0         1   FCACK-------------->   1         0
     2         2   <-------- FCIND(Inc)   2         2
     1         2   DATA--------------->   3         4

8.x.x.x. Example Halve Window Flow

The following flow illustrates the use of the Halve Window Operator:

   -----SENDER-----                     ----RECEIVER----
   Granted   Window                     Window   Granted
     0         2   circuit established    2         0
     2         2   <-------- FCIND(Rpt)   2         2
     1         2   FCACK-------------->   2         1
     4         3   <-------- FCIND(Inc)   3         4
     3         3   FCACK-------------->   3         3
                                          Resource Shortage
     2         3   DATA--------------->   1         2
     1         3   DATA--------------->   1         1
     0         3   DATA--------------->   1         0
     1         1   <-------- FCIND(Hlv)   1         1
     0         1   FCACK-------------->   1         0
     
     NOTE: The Halve Window Operator could have been sent before
           the granted units fell to zero.  The implementor may
           make a choice based on the severity of the condition.

Best regards,
Shannon